--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
meshchatx/src/backend/http/errors.py 4bd787ccd70a459a02eececca3f942f0e64ec4ce (4bd787cc) Text, 860 B
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Shared HTTP JSON error helpers for thin route handlers.
Conventions match backend docs: 400 for bad input, 503 for retryable
unavailability, 500 only for unexpected failures. Prefer adopting these
helpers when a handler is already thin. Do not refactor fat handlers only
to call these in a mechanical move change.
"""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72from T7ee787aiohttp Tff7b72import Te6edf3web
Tff7b72def Td2a8ffhttp_bad_requestTb4b4b4(Te6edf3messageTb4b4b4: Tffa657strTb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4)Tb4b4b4:
Te6edf3payload Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4: Te6edf3messageTb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4}
Tff7b72return Te6edf3webTff7b72.Td2a8ffjson_responseTb4b4b4(Te6edf3payloadTb4b4b4, Te6edf3statusTff7b72=T79c0ff400Tb4b4b4)
Tff7b72def Td2a8ffhttp_unavailableTb4b4b4(Te6edf3messageTb4b4b4: Tffa657strTb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4)Tb4b4b4:
Te6edf3payload Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4: Te6edf3messageTb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4}
Tff7b72return Te6edf3webTff7b72.Td2a8ffjson_responseTb4b4b4(Te6edf3payloadTb4b4b4, Te6edf3statusTff7b72=T79c0ff503Tb4b4b4)
Tff7b72def Td2a8ffhttp_unexpectedTb4b4b4(Te6edf3messageTb4b4b4: Tffa657str Tff7b72= Ta5d6ff"Ta5d6ffUnexpected server errorTa5d6ff"Tb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4)Tb4b4b4:
Te6edf3payload Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4: Te6edf3messageTb4b4b4, Tff7b72*Tff7b72*Te6edf3extraTb4b4b4}
Tff7b72return Te6edf3webTff7b72.Td2a8ffjson_responseTb4b4b4(Te6edf3payloadTb4b4b4, Te6edf3statusTff7b72=T79c0ff500Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────